]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
userMenu: Offer "Switch Session" item on multi-session systems
authorFlorian Müllner <fmuellner@gnome.org>
Sun, 13 May 2012 15:11:06 +0000 (17:11 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 22 May 2012 05:36:36 +0000 (07:36 +0200)
Since commit 518282e169, we hide both "Switch User" and "Log out"
on single-user systems. However, if there is more than one session
available, users may still want to get back to the login manager
to change sessions.
Add both "Log out" and "Switch Session" items in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=675802

js/ui/userMenu.js

index d72cbc7495d77ca837a5402f7d9823a3d841e297..07c0a1960d58bff7f208b67759b9b49eaa1db47b 100644 (file)
@@ -1,6 +1,7 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 
 const AccountsService = imports.gi.AccountsService;
+const GdmGreeter = imports.gi.GdmGreeter;
 const Gio = imports.gi.Gio;
 const GLib = imports.gi.GLib;
 const Lang = imports.lang;
@@ -549,14 +550,20 @@ const UserMenuButton = new Lang.Class({
 
     _updateSwitchUser: function() {
         let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
-        this._loginScreenItem.actor.visible = allowSwitch &&
-                                              this._userManager.can_switch() &&
-                                              this._userManager.has_multiple_users;
+        let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users;
+        let multiSession = GdmGreeter.get_session_ids().length > 1;
+
+        this._loginScreenItem.label.set_text(multiUser ? _("Switch User")
+                                                       : _("Switch Session"));
+        this._loginScreenItem.actor.visible = allowSwitch && (multiUser || multiSession);
     },
 
     _updateLogout: function() {
         let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
-        this._logoutItem.actor.visible = allowLogout && this._userManager.has_multiple_users;
+        let multiUser = this._userManager.has_multiple_users;
+        let multiSession = GdmGreeter.get_session_ids().length > 1;
+
+        this._logoutItem.actor.visible = allowLogout && (multiUser || multiSession);
     },
 
     _updateLockScreen: function() {